前面介紹過HTTP是一種通訊協定,而每一個網頁都屬於獨立的頁面,是不會記住各個網頁操作後的資料結果。例如,我們在首頁做登入,但其實針對於購物頁面來說是沒有這些資料的,因此, Session 的存在這時候就很重要了。
我們在做頁面的跳轉時,在 Rails 架構中,預設採用 Cookies 來儲存 Session 資料,而 Session 透過加密編碼後將一組字串放到瀏覽器的Cookie之中,當我們再打開頁面後, Cookie 會將一樣這把鑰匙帶到後端拿出相對應的value,讓各個頁面都會在載入時會一並帶入使用者的資訊,像是每次換頁面時會將我們自動將帳號資訊顯示出來。必須注意因為 Cookie 是屬於暫存的狀態,並不是真的會存在資料庫中,因此如果在關閉整個網頁後,這些資訊也就會著消失了,其優點是儲存 Session 資料對伺服器的效能負擔很低,但最多只能存 4Kb 。
但這種現象並不是一定的,例如一些購物網站,當消費者將商品加入購物車後,並未結帳就關閉頁面(沒錯,就是那個金額讓人不喜歡!)
但當消費者突然哪一天又重新登入頁面時,會發現購物車內的商品還是存在的,有時還會有個小通知提醒商品還未結帳,這種方法就不會是透過 Cookies 來儲存 Session 資料,而是使用資料庫直接存取資料,這也是因為商業邏輯考量而制定的方法。
註:
Cookies 小簡介
Cookies 是瀏覽器的功能可以讓我們將資料存在用戶的瀏覽器上,並且之後每個 HTTP Request,瀏覽器都會將你所設的 Cookies 再送回來伺服器,因此可以拿來追蹤識別不同用戶。
好啦。今天就先聊到這裡囉。明天見,掰餔。